/**
 * leetcode-20
 * @param {string} s
 * @return {boolean}
 */
/*
给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s,
判断字符串是否有效。

有效字符串需满足：
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
*/

class Stack{
    constructor()
    {
        this.items = [];
    }

    push(element)
    {
        this.items.push(element);
    }

    pop()
    {
        if(this.items.length>0)
        {
            return this.items.pop();
        }
        return undefined;   
    }

    peek()
    {
        if(this.items.length>0)
        {
            return this.items[this.items.length-1];
        }
        return undefined;   
    }
}


var isValid = function(s) {
    let stack = new Stack();
    for(let i=0;i<s.length;i++) 
    {
        if(s[i]==='{' || s[i]==='[' || s[i]==='(')
        {
            stack.push(s[i])
        }
        else
        {
            if((s[i]==='}' && stack.peek() === '{') ||
               (s[i]===')' && stack.peek() === '(') ||
               (s[i]===']' && stack.peek() === '['))
            {
                stack.pop();
            } 
            else
            {
                return false;
            } 
        }
    }

    if(stack.items.length >0)
    {
        return false;
    }
    return true;
    

   
};

s ="(]";
console.log(isValid(s));